Debugging on ICE not on GDB
Shoji Ueda (KMC)
ԥޥԥ塼

JTAG ICEˤȤ߹LINUXǥХå

1. Ϥ
  ޤǤϥǥХåȤGDBKGDBʤä
  ФLINUXDEBUG뤫ƤƤ

2. GDB
  Kernel֤ưΤϡGDBǤDEBUGˤ
   (­桼֤Device DriveräƤDEBUG䤹ʤ롣)

  㤨Driverǥ֥졼ƤˡǥХåоݥץΥ
  褦ȤꡢϤǤʤ

3. Ū
  * ֥륪֥
  * ǥޥɥڡ
  * ¿Ŷ
   
4. β(֥⥸塼)
  ϥ֥⥸塼ǥХåѤ˺ٹƤ롣
  init.hΥޥsoftwarebreakΥɤǤ롣
  insmodsoftwarebreakμ¹ԤICE롣
  ɥ쥹.text衣

  ICEĤʤǤʤȡ㳰ǻߤäƤޤ
  ˡȡǥХåȤʳǤؤڡ

5. ¿Ŷ֤β
  ȤƤݤȡ
  task_structҤɤݤ롣
  KernelΥФԹɤ褦˽񤭴뤳ȤϤǤʤ
  ɲͤ̿¹Ԥ狼ʤ
  򡢥ץξǸ褦KernelΥɤ
  

6. ǥ
  kernel 2.4

  insmod¹Ԥ.text, .data, .bssɽ롣
  ֥⥸塼̤DEBUGǤ롣

  KernelbreakƤơϤɤsystem callƤФ줿
  ߤ롣GDBǤϤǤʤ

  ɸεǽϤޤѤˡǥХåΥݡȤKernelȤ߹
  

7. Linuxι
  ¹Υץؤattach
  ǥХåμưɤ߹
  ؿȥ졼Υץб
  
8. ץ󥽡ˤĤ
  Kernelξɤ߹ǡICEϤԤ褦ʽϡ
  Linuxopen sourceǤä餳Ǥ
  KernelICEѤεǽĥɤ줿ʤɡ

9. ¾
  ptraceUNIXκθŤAPI
  ǽɬפȹͤ롣

10. 
  1) SMPбϡ
    ICEϣĤ˸롣
    桼ˤߤꡣĤˤߤƤۤ
    ɤäǤȤޤ뤫狼ʤΤǡ椦бɬס
    ֥ۥåȤǤ롣

  2) ptraceinterfaceˤĤơ
   /procΤˡptraceΤȤͤ롣
   CELFWikiptraceȤꥹȤǤƤۤ
